Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include personal computers, flash drives, digital cameras, and cellular telephones. Program code and system data such as a basic input/output system (BIOS) are typically stored in flash memory devices for use in personal computer systems.
Non-volatile memory cells can be programmed as single level cells (SLC) or multiple level cells (MLC). Single level cells have two states, erased and programmed, that can typically be illustrated by the SLC distributions of FIG. 1A. Multiple level cells can typically be illustrated by the MLC distributions of FIG. 1B.
FIG. 1A shows that an erased state 100 of SLC memory, typically a logical 1 state, is shown as a negative state. The programmed state 101, typically a logical 0 state, is shown as a positive state.
FIG. 1B shows that the erased state 103 of MLC memory, typically a logical 11 state, is shown as the negative state. The programmed states 104-106 are illustrated as positive states that can be labeled as a logical 10 state 104, a logical 00 state 105, and a logical 01 state 106.
As is evident from FIGS. 1A and 1B, the non-volatile memory cells can be programmed from the erased state to one of the programmed states by increasing a threshold voltage (Vt) of a target memory cell from a negative threshold voltage to a target threshold voltage of one of the desired programmed states. The threshold voltage is typically increased by a series of incrementally increasing programming pulses, each programming pulse followed by a verify pulse to determine the present threshold voltage of the memory cell. The programming pulses start at an initial programming voltage and increase by a step voltage until the memory cell verifies as being programmed to the target threshold voltage.
Due to manufacturing and material variations in the integrated circuit die, memory cells of a memory array program at different rates. Thus, there will be slow programming memory cells and fast programming memory cells in any memory array. A programming method could end up over-programming the faster programming memory cells.
Depending on the threshold voltage to which a memory cell is being programmed, a total of five to eight programming/verify pulses might be used to properly program an SLC memory cell. Even though an entire page of memory cells is typically programmed at one time, the time required to program the large number of pages in a memory device can reduce the performance of a memory system during a programming operation.
For the reasons stated above, and for other reasons that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a way to improve programming performance of memory.